from flask import get_flashed_messages, request, flash, render_template, redirect, url_for, session
from models.proyecto import metadata, Proyecto
from models.database import db_session
import sys
#import bz2

from models.proyectoManager import ProyectoManager
from models.faseManager import FaseManager
from models.fase import Fase
from models.comite import Comite

proyectoMgr = ProyectoManager()
faseMgr = FaseManager()

"""
Clase que contiene los metodos de consultas del Modulo de Gestion de Cambios
"""

def otrasConsultas():
    """ Metodo encargado de la busqueda de proyectos a partir de un filtro """
    filtro=""
    if request.method == "POST":
        if request.form["operacion"] != "":
            operacion = request.form["operacion"]
            idproyecto = request.form["idproyecto"]
            return redirect(url_for(operacion, idproyecto=idproyecto)) 
        else:
            idproyecto = request.form["idproyecto"]
            return render_template("otrasConsultas.html", idproyecto=idproyecto)
    if request.method == "GET":    
        if session['idproyecto']:
            idproyecto = session['idproyecto']
            proyecto = proyectoMgr.getProyecto(idproyecto)
            return render_template("otrasConsultas.html", proyecto= proyecto, idproyecto= idproyecto)
        else:
            flash(u"Seleccionar un proyecto antes de realizar la operaci\u00f3n", "error")
            return redirect(url_for("configurarProyecto", action = "otrasConsultas"))
      
def consultarFasesDelProyecto():
    """ Metodo encargado de consultar las fases de un proyecto """
    
    if request.method == "GET":
        idproyecto = request.args.getlist("idproyecto")[0]
#         idfase = request.args.getlist("idfase")[0]
        proyecto = proyectoMgr.getProyecto(idproyecto)
        return render_template("consultarFasesDelProyecto.html", fases = proyecto.fases, idproyecto = idproyecto)
    return redirect(url_for("otrasConsultas"))

def consultarTIdelProyecto():
    """ Metodo encargado de consultar los tipos de item de un proyecto """
    
    if request.method == "GET":
        idproyecto = request.args.getlist("idproyecto")[0]
#         usuarios = proyectoMgr.getUsuariosDelProyecto(idproyecto)
        proyecto = proyectoMgr.getProyecto(idproyecto)
        fases = proyecto.fases
        lista = []
        for fase in fases:
            tipos = faseMgr.getTiposFase(fase.idfase)
            lista.append(tipos)
        return render_template("consultarTIdelProyecto.html", tipos = tipos, idproyecto = idproyecto)
    return redirect(url_for("otrasConsultas"))

def consultarLBporFase():
    """ Metodo encargado de consultar las lineas base de una fase """
    
    if request.method == "GET":
        idproyecto = request.args.getlist("idproyecto")[0]
        fases = proyectoMgr.getProyecto(idproyecto).fases
        return render_template("consultarLBporFase.html", fases = fases, idproyecto = idproyecto)
    if request.method == "POST":
        if request.form["idfase"]:
            idproyecto = request.form["idproyecto"]
            idfase = request.form["idfase"]
            fase = faseMgr.getFase(idfase)
            fases = proyectoMgr.getProyecto(idproyecto).fases
            lineas = []  
            for item in fase.items:
                if item.lineaBase:
                    if item.lineaBase not in lineas:
                        lineas.append(item.lineaBase)
            return render_template("consultarLBporFase.html", fases = fases, idproyecto = idproyecto, fase = fase, lineas = lineas)
        return redirect(url_for("otrasConsultas", idproyecto = request.form["idproyecto"]))


def consultarTIporFase():
    """ Metodo encargado de consultar los tipos de item de una fase """
    
    if request.method == "GET":
        idproyecto = request.args.getlist("idproyecto")[0]
        fases = proyectoMgr.getProyecto(idproyecto).fases
        return render_template("consultarTIporFase.html", fases= fases, idproyecto = idproyecto)
    if request.method == "POST":
        if request.form["idfase"]:
            idproyecto = request.form["idproyecto"]
            idfase = request.form["idfase"]
            fase = faseMgr.getFase(idfase)
            fases = proyectoMgr.getProyecto(idproyecto).fases
            tipos = faseMgr.getTiposFase(idfase)
            return render_template("consultarTIporFase.html", tipos= tipos, idproyecto = idproyecto, fase=fase, fases=fases)
        return redirect(url_for("otrasConsultas", idproyecto = request.form["idproyecto"]))

 